/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import java.io.Serializable;

/**
 *
 * @author Frade
 */
public class Emprestimo implements Serializable{
    Empregado Empregado;
    double LimiteEmprestimo;
    double ValorEmprestimo;
    int NumPrestacoes;
    double Juros;
    double ValorPrestacao;

    public Emprestimo(Empregado Empregado, double ValorEmprestimo, int NumPrestacoes) {
        this.Empregado = Empregado;
        this.ValorEmprestimo = ValorEmprestimo;
        this.NumPrestacoes = NumPrestacoes;
    }
    
       
    public Empregado getEmpregado() {
        return Empregado;
    }
    public void setEmpregado(Empregado Empregado) {
        this.Empregado = Empregado;
    }
    public double getValorEmprestimo() {
        return LimiteEmprestimo;
    }
    public double getDoubleValorEmprestimo() {
        return (double)LimiteEmprestimo / 100.0;
    }
    public void setValorEmprestimo(double ValorEmprestimo) throws Exception{
        if(ValorEmprestimo <= LimiteEmprestimo)
        this.ValorEmprestimo = ValorEmprestimo;
        else 
            throw new Exception("Valor Invalido");
    }
    public int getNumPrestacoes() {
        return NumPrestacoes;
    }
    public void setNumPrestacoes(int NumPrestacoes) throws Exception{
        if(NumPrestacoes < Helpers.Constants.minPrestacoes || 
                NumPrestacoes > Helpers.Constants.maxPrestacoes )
            throw new Exception("Numero invalido de prestações");
        this.NumPrestacoes = NumPrestacoes;
        CalculaJuros();
        CalculaValorPrestacao();
    }
    public void CalculaJuros(){
        
        if(NumPrestacoes >0 && NumPrestacoes <=3)
            Juros = 0.5;
        if(NumPrestacoes >3 && NumPrestacoes <= 9)
            Juros = 0.65;
        if(NumPrestacoes >9 && NumPrestacoes <=13)
            Juros =0.8;
        if(NumPrestacoes >13 && NumPrestacoes <=18)
            Juros = 1.0;
    }
    public void CalculaLimite() throws Exception{
        int idade = Empregado.getIdade();
        if(Empregado.getSexo() == 'M'){
            if(idade > 65) 
                throw new Exception("Idade invalida");
            if(idade < 36){
                if(Empregado.getSalario() > 5000)
                    LimiteEmprestimo = Empregado.getSalario() * 0.7;
                else
                    LimiteEmprestimo = Empregado.getSalario() * 0.6;
            }
            if(idade > 35 && idade < 46){
                if(Empregado.getSalario() > 6000)
                    LimiteEmprestimo = Empregado.getSalario() * 0.55;
                else
                    LimiteEmprestimo = Empregado.getSalario() * 0.45;
            }
            if(idade > 45 && idade < 66)
                LimiteEmprestimo = Empregado.getSalario() * 0.35;
        }else{
           if( idade < 31)
               LimiteEmprestimo = Empregado.getSalario() * 0.75;
           if( idade > 30 && idade < 45)
               LimiteEmprestimo = Empregado.getSalario() * 0.55;
           if(idade > 45 && idade < 62)
               LimiteEmprestimo = Empregado.getSalario() * 0.4;
        }
    }   
    private void CalculaValorPrestacao(){
        ValorPrestacao = ValorEmprestimo * (Juros /(1-(1/(Math.pow((1+Juros),NumPrestacoes)))));
    }
    
}
